The growth of the Internet has spurred the development of many new programs and services that permit two-way communication between more than two users at the same time. Such communication may be in the form of typed messages, for example in the internet relay chat (IRC) service, or as voice or video transmitted over the network.
Typically such programs and services use the concept of a xe2x80x9cchannelxe2x80x9d to refer to a set of network nodes that are in mutual communication with each other. When a node subscribes to a channel, it receives copies of all of the messages that are transmitted over the channel. Programs and services using channels must therefore provide a mechanism for distributing packets issuing from one node on the channel to all of the other nodes on the channel.
Two general models have been heretofore applied in this regard. In a peer-to-peer model each node is responsible for sending a copy of each packet to all of the other nodes on the channel. This model is limited, however, by the bandwidth of the node""s network connection. For example, if the node was connected to a network by a slow dial-up connection and the node were to transmit to more than a few other nodes on the network, this could produce excessive delays. Delays are especially significant for real time audio or video communication, since they can reduce the quality of the audio or video signal received by other nodes.
An alternative to the peer-to-peer model is the client-server model. In the client server model, data communicated between the various nodes subscribing to a channel (referred to as xe2x80x9cclientsxe2x80x9d) are always directed through a dedicated intermediary computer known as the xe2x80x9cserver.xe2x80x9d In the simplest case, the server acts as a reflector of the data packets received from clients. Each packet received at the server is copied, with a copy transmitted to every other client on the channel.
Alternatively, servers may combine data received from multiple nodes (e.g. by mixing simultaneously received audio signals), and transmit the combined data to the clients on the channel.
Because the server is dedicated to retransmission of data from a large number of clients, its bandwidth may be underutilized if it is not operating at full capacity.
The present invention provides an improved method, system, and computer program product for providing communication among multiple nodes on a network.
In one aspect, the invention is a method for transmitting a data block over a network from a first sending node to a first set of recipient nodes, including, in the first sending node, a) dividing the first set of recipient nodes into a subset of selected nodes, selected according to scoring criteria associated with each recipient node, and a subset of unselected nodes, b) assigning at least one of the unselected nodes to at least one selected node according to scoring criteria associated with the respective selected nodes, and c) transmitting to each selected node a packet including the data block and a list of the nodes assigned to the selected node.
In another aspect, the invention is a method for transmitting a data block over a network from a first sending node to a first set of recipient nodes, including, the steps of, in a selected node, a) receiving from the first sending node the packet including the data block and a list of assigned nodes, b) dividing the list of assigned nodes into a subset of selected assigned nodes, selected according to scoring criteria associated with each assigned node, and a subset of unselected assigned nodes, c) re-assigning at least one of the unselected assigned nodes to at least one selected assigned node according to the scoring criteria associated with respective selected assigned nodes, and d) transmitting to each selected assigned node a packet including the data block and a list of the nodes re-assigned to the selected assigned node.
It is therefore an advantage of the invention to provide a method and system for enabling a node in a data network, having a low effective bandwidth, to transmit data to a large number of other nodes in the network, without excessive delay. It is a further advantage of the invention to provide a method and system for enabling a node in a data network to transmit data to a large number of other nodes in the network, without the use of a dedicated server.
These, and other advantages of the present invention, are fully described in the following detailed description of a preferred embodiment, and in the claims.